import java.awt.print.Printable;
import java.util.Arrays;
import java.util.Iterator;

/**
 * 从键盘输入8个整数存放在一个数组中，然后将奇数和偶数分别存入到两个不同的数组中，
 * 并按奇数、偶数交替的顺序输出这两个数组中的所有数据（先交替输出，如果奇数个数多，则再输出剩下的奇数，如果偶数个数多，则再输出剩下的偶数）。
 * （提示与要求：（1）定义一个数组存储从键盘输入的8个整数， 先判断这8个整数中奇数和偶数的个数，才能定义存储奇数和偶数的数组的长度；
 * （2）把一个大的数组分别存放在奇数和偶数数组中并交替输出的过程定义为方法）
 * 
 * @author Lenovo
 *
 */
public class Demo05 {
	public static void main(String[] args) {
		int[] arr = { 12, 34, 6, 7, 9, 6, 9, 2 };
		int[] ouArr = new int[getCount(arr, true)];
		int[] jiArr = new int[getCount(arr, false)];
		add(arr, ouArr, jiArr);
		System.out.println(Arrays.toString(arr));
		System.out.println(Arrays.toString(ouArr));
		System.out.println(Arrays.toString(jiArr));
		print(ouArr, jiArr);
	}

	static void print(int[] ouArr, int[] jiArr) {
		int index = 0;
		//如果索引一直在偶数和奇数的长度范围内，需要遍历打印
		while (index < ouArr.length || index < jiArr.length) {
			//说明奇数未打印完
			if (index < jiArr.length) {
				System.out.println("奇数：" + jiArr[index]);
			}
			//偶数未打印完
			if (index < ouArr.length) {
				System.out.println("偶数：" + ouArr[index]);
			}
			//把奇数偶数打印完，索引往后移一位
			index++;
		}
		
	}

	static void add(int[] arr, int[] ouArr, int[] jiArr) {
		int ouIndex = 0;
		int jiIndex = 0;
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] % 2 == 0) {
				ouArr[ouIndex++] = arr[i];
			} else {
				jiArr[jiIndex++] = arr[i];
			}
		}

	}

	/**
	 * flag如果是true计算偶数个数，反之奇数个数
	 * 
	 * @param arr
	 * @param flag
	 * @return
	 */
	static int getCount(int[] arr, boolean flag) {
		int ouCount = 0;
		int jiCount = 0;

		for (int i = 0; i < arr.length; i++) {
			if (arr[i] % 2 == 0) {
				ouCount++;
			} else {
				jiCount++;
			}
		}

		return flag ? ouCount : jiCount;
	}
}
